I stumbled onto this example in ts docs inside the Handbook>Type Manipulation>Conditional Types
type GetReturnType<Type> = Type extends (...args: never[]) => infer Return
? Return
: never;
type Num = GetReturnType<() => number>;
type Num = number
type Str = GetReturnType<(x: string) => string>;
type Str = string
type Bools = GetReturnType<(a: boolean, b: boolean) => boolean[]>;
I tried to use any and it also gave me the same results why is never[] used here what benefits does it provide here instead of any[]?